// var consts = require('../../../util/consts');
// var utils = require('../../../util/utils');
// var time = require('../../../util/time');
// var AsyncLock = require('async-lock');
// var uuid = require('node-uuid');
// var pushUtils = require('../../../util/pushUtils');
// var mapJson = require('../../../../config/data/map');
// var dispatcher = require('../../../util/dispatcher');
// var JewelDetailed = require('../../../domain/jewelDetailed');
// var BonusDetaile = require('../../../domain/bonusDetaile');
// var IncomeDetailed = require('../../../domain/incomeDetailed');
// var User = require('../../login/lib/userSchema');

// var lock = new AsyncLock({timeout: 1000});

// module.exports = function (app) {
//     return new Handler(app);
// };

// var Handler = function (app) {
//     this.app = app;
// };

// var handler = Handler.prototype;

// /**
//  * 日常任务用户单日看视频次数累加
//  * @param uid
//  * @param frontendId
//  * @param cb
//  */
// handler.missionVideoIncrease = function (uid, frontendId, number, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(dailyMissionKey, uid, function (err, data) {
//         if (!!err) {
//             console.log('missionVideoIncrease err 1:' + err)
//             cb(err);
//             return;
//         }
//         //用户任务存在
//         if (data) {
//             //尝试获取任务锁
//             lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//                 //获取成功
//                 redis.hget(dailyMissionKey, uid, function (err, data) {
//                     if (!!err) {
//                         console.log('missionVideoIncrease err 3:' + err)
//                         cb(err);
//                         return;
//                     }
//                     let missionObj = JSON.parse(data);
//                     //累积自己看视频的次数
//                     missionObj.video_num = missionObj.video_num == null ? 1 : parseInt(missionObj.video_num) + 1;
//                     //达到了要求的日常看视频次数要求，并且没有领取过奖励
//                     if (missionObj.video_num == consts.Constant.DAILY_VIDEO_MISSION && missionObj.personal_video_reward != 2) {
//                         //日常视频任务状态变为待领取
//                         missionObj.personal_video_reward = 1;
//                     }
//                     //更新回redis并释放锁资源
//                     redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                         if (!!err) {
//                             console.log('missionVideoIncrease err 4:' + err)
//                             cb(err);
//                             return;
//                         }
//                     });
//                 });
//             }, function (err, ret) {
//                 if (!!err) {
//                     console.log('missionVideoIncrease err 2:' + err)
//                     console.log('missionVideoIncrease ret 2:' + ret)
//                     cb(err);
//                     return;
//                 }
//             });
//         }
//     });
//     cb(null);
//     return;
// }

// /**
//  * 用户领取日常任务中视频奖励任务，每日分红奖励
//  * @param uid
//  * @param frontendId
//  */
// handler.receiveDailyBonus = function (uid, frontendId, userInfo, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(dailyMissionKey, uid, function (err, data) {
//         if (!!err) {
//             console.log('receiveDailyBonus err 1:' + err)
//             cb(err);
//             return;
//         }
//         //用户任务存在
//         if (data != 0) {
//             //尝试获取任务锁
//             lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//                 //获取成功
//                 redis.hget(dailyMissionKey, uid, function (err, data) {
//                     if (!!err) {
//                         console.log('missionVideoIncrease err 3:' + err)
//                         cb(err);
//                         return;
//                     }
//                     let missionObj = JSON.parse(data);
//                     //每日分红是待领取状态,可以领取
//                     if (missionObj.personal_video_reward == 1) {
//                         //去领取分红奖励
//                         handler.receiveIncome(self.app, userInfo, uid, function (err) {
//                             //领取失败了，返回异常信息
//                             if (!!err) {
//                                 cb(err);
//                                 return;
//                             }
//                             //领取状态变为已领取
//                             missionObj.personal_video_reward = 2;
//                             redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                                 //执行失败
//                                 if (!!err) {
//                                     console.log('missionVideoIncrease err 4:' + err);
//                                     cb(err);
//                                     return;
//                                 }
//                                 //逻辑完成
//                                 cb(null);
//                                 return;
//                             });
//                         });
//                     } else {
//                         //奖励已经领取过了
//                         if (missionObj.personal_video_reward == 2) {
//                             cb(consts.Msg.BONUS_RECEIVED);
//                             return;
//                         } else { //任务还没完成
//                             cb(consts.Msg.MISSION_UNDONE);
//                             return;
//                         }
//                     }
//                 });
//             }, function (err, ret) {
//                 if (!!err) {
//                     console.log('receiveDailyBonus err 2:' + err)
//                     console.log('receiveDailyBonus ret 2:' + ret)
//                     cb(err);
//                     return;
//                 }
//             })
//         }
//     });
// }

// /**
//  * 更新团长任务的信息
//  * @param uid
//  * @param cb
//  */
// handler.updateCommanderTask = function (sapp, uid, cb) {
//     var self = this;
//     var redis = sapp.get('redis');
//     //任务key
//     var missionKey = consts.RedisPrefix.COMMAND_TASK + time.dateFormat("YYYY_mm_dd", new Date());

//     User.findOne({uid: uid}, function (err, parent) {
//         if (parent != null) { //有师傅
//             //是团长
//             if (parent.is_commander != undefined && parent.is_commander) {
//                 redis.hexists(missionKey, uid, function (err, data) {
//                     if (err) {
//                         console.error('updateCommanderTask err 1', err);
//                         cb(err);
//                         return;
//                     }
//                     if (data != 0) { //有任务信息
//                         redis.hget(missionKey, uid, function (err, data) {
//                             let mission = JSON.parse(data);
//                             if (!mission.can_receive) { //任务未完成
//                                 if (mission.finish_video_count + 1 == mission.need_video_count) {
//                                     mission.can_receive = true;
//                                 }
//                                 mission.finish_video_count = mission.finish_video_count + 1;
//                                 if (mission.finish_video_count > mission.need_video_count) {
//                                     mission.finish_video_count = mission.need_video_count;
//                                 }
//                                 redis.hset(missionKey, uid, JSON.stringify(mission), function (err, data) {
//                                     if (err) {
//                                         console.error('updateCommanderTask err 2', err)
//                                         cb(err);
//                                         return;
//                                     }
//                                     cb(null);
//                                 });
//                             }
//                         });
//                     }
//                 });
//             }
//             //有师爷
//             if (parent.parent_id != "0") {
//                 User.findOne({uid: parent.parent_id}, function (err, grandParent) {
//                     if (err) {
//                         console.error('updateCommanderTask err 3', err)
//                         cb(err);
//                         return;
//                     }
//                     //有师爷
//                     if (grandParent != null) {
//                         //师爷是团长
//                         if (grandParent.is_commander != undefined && grandParent.is_commander) {
//                             redis.hexists(missionKey, grandParent.uid, function (err, data) {
//                                 //有任务信息
//                                 if (data != 0) {
//                                     redis.hget(missionKey, grandParent.uid, function (err, data) {
//                                         let mission = JSON.parse(data);

//                                         if (!mission.can_receive) { //任务未完成
//                                             if (mission.finish_video_count + 1 == mission.need_video_count) {
//                                                 mission.can_receive = true;
//                                             }
//                                             mission.finish_video_count = mission.finish_video_count + 1;
//                                             if (mission.finish_video_count > mission.need_video_count) {
//                                                 mission.finish_video_count = mission.need_video_count;
//                                             }
//                                             redis.hset(missionKey, uid, JSON.stringify(mission), function (err, data) {
//                                                 if (err) {
//                                                     console.error('updateCommanderTask err 4', err)
//                                                     cb(err);
//                                                     return;
//                                                 }
//                                                 cb(null);
//                                             });
//                                         }
//                                     });
//                                 }
//                             });
//                         }
//                     }
//                 });
//             }
//         }
//     });
// }

// /**
//  * 邀请新用户得到领取分红石的机会
//  * @param uid
//  * @param frontendId
//  * @param cb
//  */
// handler.increaseInviteReward = function (uid, frontendId, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(dailyMissionKey, uid, function (err, data) {
//         if (!!err) {
//             console.log('increaseInviteReward err 1:' + err)
//             cb(err);
//             return;
//         }
//         //用户任务存在
//         if (data != 0) {
//             //尝试获取任务锁
//             lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//                 //获取成功
//                 redis.hget(dailyMissionKey, uid, function (err, data) {
//                     if (!!err) {
//                         console.log('increaseInviteReward err 2:' + err)
//                         cb(err);
//                         return;
//                     }
//                     let missionObj = JSON.parse(data);
//                     //领取机会加1
//                     missionObj.invite_reward = parseInt(missionObj.invite_reward) + 1;
//                     redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                         //执行失败
//                         if (!!err) {
//                             console.log('increaseInviteReward err 3:' + err)
//                             cb(err);
//                             return;
//                         }
//                         //逻辑完成
//                         cb(null);
//                         return;
//                     });
//                 });
//             });
//         } else { //用户任务不存在
//             redis.hset(dailyMissionKey, uid, JSON.stringify({
//                 invite_reward: 1,
//                 friends_video_reward: 0,
//                 personal_video_reward: 0,
//                 video_num: 0
//             }), function (err, data) {
//                 //执行失败
//                 if (!!err) {
//                     console.log('increaseInviteReward err 4:' + err)
//                     cb(err);
//                     return;
//                 }
//                 //逻辑完成
//                 cb(null);
//                 return;
//             });
//         }
//     });
// }

// /**
//  * 延长领取分红的时间
//  * @param uid
//  * @param frontendId
//  * @param day
//  * @param cb
//  */
// handler.extendProfitQualify = function (uid, frontendId, day, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let profitKey = consts.RedisPrefix.PROFIT_PREFIX;
//     let oldKey = consts.RedisPrefix.PROFIT_OLD;
//     let current = new Date().valueOf();
//     redis.hexists(profitKey, uid, function (err, data) {
//         if (err) {
//             console.error('extendProfitQualify err 1', err);
//             console.error('uid', uid);
//             cb(err);
//             return;
//         }
//         let end = current + (86400000 * day);
//         //有记录
//         if (data != 0) {
//             redis.hget(profitKey, uid, function (err, data) {
//                 if (err) {
//                     console.error('extendProfitQualify err 3', err)
//                     cb(err);
//                     return;
//                 }
//                 let jsonObj = JSON.parse(data);
//                 //资格还在有效期内
//                 if (jsonObj.end > current) {
//                     //延长领取时间
//                     jsonObj.end = jsonObj.end + ((86400000 * day));
//                 } else {
//                     //资格已经过了有效期，重新设置有效期
//                     jsonObj = {
//                         current: current,
//                         end: end
//                     }
//                 }
//                 redis.hset(profitKey, uid, JSON.stringify(jsonObj), function (err, data) {
//                     if (err) {
//                         console.error('extendProfitQualify err 4', err)
//                         cb(err);
//                         return;
//                     }
//                 });
//             });
//         } else {
//             //没有记录
//             //判断是否有旧逻辑的记录
//             redis.hexists(oldKey, uid, function (err, data) {
//                 //有记录
//                 if (data != 0) {
//                     redis.hget(oldKey, uid, function (err, data) {
//                         let oldDate = parseInt(data);
//                         let diff = current - oldDate;
//                         if (diff > 259200000) {
//                             //旧逻辑的邀请时间到现在已经超过3天了
//                             let obj = {
//                                 current: current,
//                                 end: end
//                             };
//                             redis.hset(profitKey, uid, JSON.stringify(obj), function (err, data) {
//                                 if (err) {
//                                     console.error('extendProfitQualify err 3', err)
//                                     cb(err);
//                                     return;
//                                 }
//                             });
//                             cb(null);
//                             return;
//                         } else {
//                             //旧逻辑到现在的时间，还在3天以内，在旧逻辑的时间上继续延续3天
//                             redis.hset(profitKey, uid, JSON.stringify({
//                                 current: oldDate,
//                                 end: oldDate + 518400000
//                             }), function (err, data) {
//                                 if (err) {
//                                     console.error('extendProfitQualify err 2', err)
//                                     cb(err);
//                                     return;
//                                 }
//                             });
//                             cb(null);
//                             return;
//                         }
//                     });
//                 } else {
//                     //没有记录
//                     redis.hset(profitKey, uid, JSON.stringify({
//                         current: current,
//                         end: end
//                     }), function (err, data) {
//                         if (err) {
//                             console.error('extendProfitQualify err 2', err)
//                             cb(err);
//                             return;
//                         }
//                     });
//                 }
//             });
//         }
//     });
//     cb(null);
// }

// /**
//  * 判断用户是否有资格领取分红
//  * @param uid
//  * @param cb
//  */
// handler.checkProfitQualify = function (sapp, uid, cb) {
//     var self = this;
//     var redis = sapp.get('redis');
//     let profitKey = consts.RedisPrefix.PROFIT_PREFIX;
//     let oldKey = consts.RedisPrefix.PROFIT_OLD;
//     let current = new Date().valueOf();
//     redis.hexists(profitKey, uid, function (err, data) {
//         if (err) {
//             console.error('checkProfitQualify err 1: ', err);
//             console.error('uid', uid);
//             cb(0);
//             return;
//         }
//         if (data != 0) {
//             redis.hget(profitKey, uid, function (err, data) {
//                 if (err) {
//                     console.error('checkProfitQualify err 1: ', err);
//                     console.error('uid', uid);
//                     cb(0);
//                     return;
//                 }
//                 let jsonObj = JSON.parse(data);
//                 let diff = jsonObj.end - current;
//                 if (diff <= 0) {
//                     cb(0);
//                     return;
//                 } else {
//                     let reduce = parseInt(diff / 1000);
//                     cb(reduce);
//                     return;
//                 }
//             });
//         } else {
//             redis.hexists(oldKey, uid, function (err, data) {
//                 if (err) {
//                     console.error('checkProfitQualify err', err)
//                     cb(0);
//                     return;
//                 }
//                 //有旧逻辑的记录
//                 if (data != 0) {
//                     redis.hget(oldKey, uid, function (err, data) {
//                         let oldDate = parseInt(data);
//                         let diff = current - oldDate;
//                         //旧逻辑的时间到现在已经超过3天了， 过期
//                         if (diff > 259200000) {
//                             cb(0);
//                             return;
//                         } else {
//                             //延续旧逻辑的时间
//                             let reduce = 259200000 - diff;
//                             let ret = parseInt(reduce / 1000);
//                             cb(ret);
//                             return;
//                         }
//                     });
//                 } else {
//                     //没有旧逻辑的记录
//                     cb(0);
//                     return;
//                 }
//             });
//         }
//     });
// }

// /**
//  * 领取邀请用户得到的奖励机会
//  * @param uid
//  * @param frontendId
//  * @param cb
//  */
// handler.receiveInviteReward = function (uid, userInfo, frontendId, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(dailyMissionKey, uid, function (err, data) {
//         if (!!err) {
//             console.error('receiveInviteReward err 1:' + err);
//             cb(err, null);
//             return;
//         }
//         //用户任务存在
//         if (data != 0) {
//             //尝试获取任务锁
//             lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//                 //获取成功
//                 redis.hget(dailyMissionKey, uid, function (err, data) {
//                     if (!!err) {
//                         console.error('receiveInviteReward err 2:' + err);
//                         cb(err, null);
//                         return;
//                     }
//                     let missionObj = JSON.parse(data);
//                     //待领取次数不足了
//                     if (missionObj.invite_reward <= 0) {
//                         cb(consts.Msg.NUMBER_LESS, null);
//                         return;
//                     }
//                     //待领取次数减少
//                     missionObj.invite_reward = (missionObj.invite_reward - 1) > 0 ? missionObj.invite_reward - 1 : 0;
//                     redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                         //执行失败
//                         if (!!err) {
//                             console.log('receiveInviteReward err 3:' + err);
//                             cb(err, null);
//                             return;
//                         }
//                     });
//                     //单日邀请记录
//                     let inviteKey = consts.RedisPrefix.DAILY_INVITE_NUMBER + time.dateFormat("YYYY_mm_dd", new Date());
//                     redis.hexists(inviteKey, userInfo.uid, function (err, data) {
//                         if (data != 0) {
//                             redis.hget(inviteKey, userInfo.uid, function (err, data) {
//                                 data = parseInt(data);
//                                 if (data >= 3) {
//                                     //获取随机宝石奖励
//                                     let jewel = utils.randomInviteJewel();
//                                     userInfo.jewel += jewel;
//                                     //将用户信息赋值回login服务器内存
//                                     self.app.rpc.login.loginRemote.setUser(null, userInfo, function (err, user) {
//                                     });
//                                     //直接同步用户数据库内的数据
//                                     User.updateOne({uid: userInfo.uid}, userInfo, function (err, data) {
//                                     });
//                                     // 增加宝石收益明细
//                                     let jewelDetailed = new JewelDetailed({
//                                         id: uuid.v4(),
//                                         uid: uid,
//                                         increase_jewel: jewel,
//                                         total_jewel: userInfo.jewel,
//                                         gmt_create: new Date().valueOf(),
//                                         gmt_modified: new Date().valueOf()
//                                     });
//                                     jewelDetailed.save(jewelDetailed, function (err, data) {
//                                         if (!!err) {
//                                             console.log('receiveInviteReward err 4:' + err);
//                                             cb(err, null);
//                                             return;
//                                         }
//                                     });
//                                     // 给指定用户推送
//                                     pushUtils.onJewelAddRpc(self.app, {
//                                         increase: jewel,
//                                         current: userInfo.jewel
//                                     }, uid, frontendId);
//                                     //逻辑结束
//                                     cb(null, {
//                                         increase: jewel,
//                                         current: userInfo.jewel
//                                     });
//                                     return;
//                                 } else {
//                                     //获取随机宝石奖励
//                                     let jewel = 0.03;
//                                     userInfo.jewel += jewel;
//                                     //将用户信息赋值回login服务器内存
//                                     self.app.rpc.login.loginRemote.setUser(null, userInfo, function (err, user) {
//                                     });
//                                     redis.hset(inviteKey, userInfo.uid, data + 1, function (err, data) {
//                                     });
//                                     //直接同步用户数据库内的数据
//                                     User.updateOne({uid: userInfo.uid}, userInfo, function (err, data) {
//                                     });
//                                     // 增加宝石收益明细
//                                     let jewelDetailed = new JewelDetailed({
//                                         id: uuid.v4(),
//                                         uid: uid,
//                                         increase_jewel: jewel,
//                                         total_jewel: userInfo.jewel,
//                                         gmt_create: new Date().valueOf(),
//                                         gmt_modified: new Date().valueOf()
//                                     });
//                                     jewelDetailed.save(jewelDetailed, function (err, data) {
//                                         if (!!err) {
//                                             console.log('receiveInviteReward err 4:' + err);
//                                             cb(err, null);
//                                             return;
//                                         }
//                                     });
//                                     // 给指定用户推送
//                                     pushUtils.onJewelAddRpc(self.app, {
//                                         increase: jewel,
//                                         current: userInfo.jewel
//                                     }, uid, frontendId);
//                                     //逻辑结束
//                                     cb(null, {
//                                         increase: jewel,
//                                         current: userInfo.jewel
//                                     });
//                                     return;
//                                 }
//                             });
//                         } else {
//                             //获取随机宝石奖励
//                             let jewel = 0.03;
//                             userInfo.jewel += jewel;
//                             //将用户信息赋值回login服务器内存
//                             self.app.rpc.login.loginRemote.setUser(null, userInfo, function (err, user) {
//                             });
//                             redis.hset(inviteKey, userInfo.uid, 1, function (err, data) {
//                             });
//                             //直接同步用户数据库内的数据
//                             User.updateOne({uid: userInfo.uid}, userInfo, function (err, data) {
//                             });
//                             // 增加宝石收益明细
//                             let jewelDetailed = new JewelDetailed({
//                                 id: uuid.v4(),
//                                 uid: uid,
//                                 increase_jewel: jewel,
//                                 total_jewel: userInfo.jewel,
//                                 gmt_create: new Date().valueOf(),
//                                 gmt_modified: new Date().valueOf()
//                             });
//                             jewelDetailed.save(jewelDetailed, function (err, data) {
//                                 if (!!err) {
//                                     console.log('receiveInviteReward err 4:' + err);
//                                     cb(err, null);
//                                     return;
//                                 }
//                             });
//                             // 给指定用户推送
//                             pushUtils.onJewelAddRpc(self.app, {
//                                 increase: jewel,
//                                 current: userInfo.jewel
//                             }, uid, frontendId);
//                             //逻辑结束
//                             cb(null, {
//                                 increase: jewel,
//                                 current: userInfo.jewel
//                             });
//                             return;
//                         }
//                     });
//                 });
//             });
//         }
//     });
// }

// /**
//  * 领取当日分红
//  * @param user
//  * @param uid
//  */
// handler.receiveIncome = function (sapp, user, uid, cb) {
//     var self = this;
//     var redis = sapp.get('redis');
//     let bonusKey = consts.RedisPrefix.BONUS_RECORD + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(bonusKey, uid, function (err, data) {
//         if (err) {
//             console.error('receiveIncome err:', err);
//             cb(consts.Msg.HAS_RECEIVE);
//             return;
//         }
//         //已经领取过了
//         if (data != 0) {
//             cb(null);
//             return;
//         } else {
//             handler.checkProfitQualify(sapp, uid, function (result) {
//                 if (result != 0) {
//                     var connectorServers = sapp.getServersByType('connector');
//                     BonusDetaile.findOne({
//                         uid: uid,
//                         time: new Date(new Date().toLocaleDateString()).getTime() - 86400000,
//                         is_provide: false
//                     }, function (err, bonus) {
//                         if (bonus) {
//                             if (bonus.is_provide) {
//                                 cb(consts.Msg.HAS_RECEIVE);
//                                 return;
//                             }
//                             let uid = user.uid;
//                             let connectorId = dispatcher.dispatch(uid, connectorServers).id;
//                             // 设置内存中在线用户的数据
//                             user.yesterday_income = bonus.yesterdayIncome;
//                             user.balance = Number((user.balance + bonus.yesterdayIncome).toFixed(8));
//                             user.total_income = Number((user.total_income + bonus.yesterdayIncome).toFixed(8));
//                             pushUtils.onMoneyAdd(sapp, {
//                                 increase: user.yesterday_income,
//                                 current: user.balance
//                             }, uid, connectorId);
//                             pushUtils.onIncomeAdd(sapp, {
//                                 increase: user.yesterday_income
//                             }, uid, connectorId);

//                             sapp.rpc.login.loginRemote.setUser(null, user, function (err, user) {
//                                 // 插入收益明细表
//                                 handler.addIncomeDetailed(uid, user.yesterday_income, user.balance, user.total_income, bonus.jewel_percentage);
//                                 // 更新分红为发放状态
//                                 BonusDetaile.updateOne({id: bonus.id}, {is_provide: true}, function (err, data) {
//                                     if (err) {
//                                         console.error('BonusDetailed update err id = ' + bonus.id);
//                                         cb('当前网络忙');
//                                         return;
//                                     }
//                                 });
//                             });
//                             User.updateOne({uid: uid}, {
//                                 balance: user.balance,
//                                 total_income: user.total_income,
//                                 yesterday_income: user.yesterday_income
//                             }, function () {
//                                 if (err) {
//                                     console.error('User.updateOne money err uid = ' + user.uid);
//                                     cb('当前网络忙');
//                                     return;
//                                 }
//                             });
//                             //分红领取成功，将记录放入redis
//                             redis.hset(bonusKey, uid, true, function (err, data) {
//                                 if (err) {
//                                     console.error('receiveIncome hset error', err);
//                                     cb('当前网络忙');
//                                     return;
//                                 }
//                             });
//                             cb(null);
//                             return;
//                         } else {
//                             cb(consts.Msg.NOT_TO_BONUS);
//                             return;
//                         }
//                     });
//                 } else {
//                     cb(consts.Msg.NEED_SON_TO_BONUS);
//                     return;
//                 }
//             });
//         }
//     });
// }

// /**
//  * 领取好友观看视频得到的奖励机会
//  * @param uid
//  * @param frontendId
//  * @param userInfo
//  * @param cb
//  */
// handler.receiveFriendsVideo = function (uid, userInfo, frontendId, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     //尝试获取任务锁
//     lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//         //获取成功
//         redis.hget(dailyMissionKey, uid, function (err, data) {
//             if (err) {
//                 console.error('receiveFriendsVideo err 2:' + err);
//                 console.error('uid :' + uid);
//                 cb(err, null);
//                 return;
//             }
//             let missionObj = JSON.parse(data);
//             //待领取次数不足了
//             if (missionObj.friends_video_reward <= 0) {
//                 cb(consts.Msg.NUMBER_LESS, null);
//                 return;
//             }
//             //待领取次数减少
//             missionObj.friends_video_reward = (missionObj.friends_video_reward - 1) > 0 ? missionObj.friends_video_reward - 1 : 0;
//             redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                 //执行失败
//                 if (err) {
//                     console.error('receiveFriendsVideo err 3:' + err);
//                     console.error('uid :' + uid);
//                     cb(err, null);
//                     return;
//                 }
//             });
//             //获取随机宝石奖励
//             let jewel = utils.randomFriendsJewel();
//             userInfo.jewel += jewel;
//             //获取随机金币奖励
//             var floorName = utils.getFloorName(userInfo.current_level + 1);
//             var mapInfo = mapJson[floorName]; //要解锁的矿层信息
//             let coins = utils.randomFriendsCoins(mapInfo);
//             userInfo.coins += coins;
//             //将用户信息赋值回login服务器内存
//             self.app.rpc.login.loginRemote.setUser(null, userInfo, function (err, user) {
//                 if (err) {
//                     console.error('receiveFriendsVideo err 4:' + err);
//                     console.error('uid :' + uid);
//                 }
//             });
//             //直接同步用户数据库内的数据
//             User.updateOne({uid: userInfo.uid}, userInfo, function (err, data) {
//                 if (err) {
//                     console.error('receiveFriendsVideo err 5:' + err);
//                     console.error('uid :' + uid);
//                 }
//                 User.findOne({uid: userInfo.uid}, function (err, data) {
//                     console.error('after updateOne user 6:' + data)
//                 });
//             });

//             var jewelDetailed = new JewelDetailed({
//                 id: uuid.v4(),
//                 uid: uid,
//                 increase_jewel: jewel,
//                 total_jewel: userInfo.jewel,
//                 gmt_create: new Date().valueOf(),
//                 gmt_modified: new Date().valueOf()
//             });

//             // 增加宝石收益明细
//             jewelDetailed.save(function (err) {
//                 if (!!err) {
//                     console.error('receiveFriendsVideo err 6:' + err);
//                     console.error('uid :' + uid);
//                     cb(err, null);
//                     return;
//                 }
//                 //清除宝石收益缓存
//                 //宝石明细缓存key
//                 let cacheKey = consts.RedisPrefix.OIL_DETAIL_PREFIX + uid;
//                 redis.exists(cacheKey, function (err, data) {
//                     if (data != 0) {
//                         redis.del(cacheKey, function (err, data) {
//                         });
//                     }
//                 });
//             });
//             // 给指定用户推送宝石变化
//             pushUtils.onJewelAddRpc(self.app, {
//                 increase: jewel,
//                 current: userInfo.jewel
//             }, uid, frontendId);
//             // 给指定用户推送金币变化
//             pushUtils.onCoinsAddRpc(self.app, {
//                 increase: utils.formatCoins(coins),
//                 current: utils.formatCoins(userInfo.coins)
//             }, uid, frontendId);
//             //逻辑结束
//             cb(null, {
//                 coins: utils.formatCoins(coins),
//                 jewel: jewel
//             });
//             return;
//         });
//     });
// }

// /**
//  * 好友观看视频任务完成，增加待领取的机会
//  * @param uid
//  * @param frontendId
//  * @param cb
//  */
// handler.increaseFriendsVideoReward = function (uid, frontendId, cb) {
//     var self = this;
//     var redis = self.app.get('redis');
//     let dailyMissionKey = consts.RedisPrefix.DAILY_MISSION_PREFIX + time.dateFormat("YYYY_mm_dd", new Date());
//     redis.hexists(dailyMissionKey, uid, function (err, data) {
//         if (!!err) {
//             console.error('increaseFriendsVideoReward err 1:' + err);
//             cb(err, null);
//             return;
//         }
//         //用户任务存在
//         if (data) {
//             //尝试获取任务锁
//             lock.acquire(consts.LockKey.DAILY_MISSION_LOCK + uid, function () {
//                 //获取成功
//                 redis.hget(dailyMissionKey, uid, function (err, data) {
//                     if (!!err) {
//                         console.error('increaseFriendsVideoReward err 2:' + err);
//                         cb(err, null);
//                         return;
//                     }
//                     //有师傅信息，可以领取任务，说明看过了30次视频，去更新团长任务的数据
//                     handler.updateCommanderTask(self.app, uid, function (err) {
//                         if (err) {
//                             console.error('receiveDailyBonus updateCommanderTask', err);
//                             cb('当前网络忙');
//                         }
//                     });
//                     let missionObj = JSON.parse(data);
//                     //领取机会加1
//                     missionObj.friends_video_reward = parseInt(missionObj.friends_video_reward) + 1;
//                     redis.hset(dailyMissionKey, uid, JSON.stringify(missionObj), function (err, data) {
//                         //执行失败
//                         if (err) {
//                             console.error('increaseFriendsVideoReward err 3:' + err)
//                             cb(err);
//                             return;
//                         }
//                         //逻辑完成
//                         cb(null);
//                         return;
//                     });
//                 });
//             });
//         } else { //用户任务不存在
//             //有师傅信息，可以领取任务，说明看过了30次视频，去更新团长任务的数据
//             handler.updateCommanderTask(self.app, uid, function (err) {
//                 if (err) {
//                     console.error('receiveDailyBonus updateCommanderTask', err);
//                     cb('当前网络忙');
//                 }
//             });
//             redis.hset(dailyMissionKey, uid, JSON.stringify({
//                 invite_reward: 0,
//                 friends_video_reward: 1,
//                 personal_video_reward: 0,
//                 video_num: 0
//             }), function (err, data) {
//                 //执行失败
//                 if (!!err) {
//                     console.error('increaseFriendsVideoReward err 4:' + err)
//                     cb(err);
//                     return;
//                 }
//                 //逻辑完成
//                 cb(null);
//                 return;
//             });
//         }
//     });
// }

// /**
//  * 增加收益明细
//  * @param uid
//  * @param income
//  * @param balance
//  * @param total_income
//  * @param jewel_percentage
//  */
// handler.addIncomeDetailed = function (uid, income, balance, total_income, jewel_percentage) {
//     if (income === 0) {
//         return;
//     }
//     var newIncomeDetailed = new IncomeDetailed({
//         id: uuid.v4(),
//         uid: uid,
//         income: income,
//         balance: balance,
//         total_income: total_income,
//         jewel_percentage: jewel_percentage,
//         gmt_create: new Date().valueOf(),
//         gmt_modified: new Date().valueOf(),
//     });
//     newIncomeDetailed.save(function (err, data) {
//         if (err) {
//             console.log('addIncomeDetailed err = ' + err);
//         }
//     })
// }
